阅读指南
本节不再讲概念,而是从零开始实现一个游戏装备计算助手。先做需求分析和交互流程设计,搞清楚要做什么、怎么运转。
项目目标
在 RPG 或 MOBA 类游戏中,玩家常面临复杂的装备属性抉择:这把新武器比旧的强多少?换了这件装备,总伤害能提升几成?传统的做法是查攻略或拉 Excel 表格,既繁琐又不直观。
我们的目标是打造一个「游戏助手」,让玩家只需通过自然语言提问,即可获得精准的数值计算与对比建议。
理想的交互体验
你:"这把「破晓之剑」比我现在的武器强多少?"
AI:"让我帮你计算一下……
破晓之剑:基础攻击 674,相比当前武器提升了 32.2%。
算上暴击加成,总伤害预计提升约 40%。建议更换!"
这就是我们要做的事情。
我们可能会疑惑,让AI学会计算游戏数值就好了,为什么要用MCP?
让我们对比两种实现方式。
方案A:纯提示词方案(不用MCP)
你:帮我算一下破晓之剑的总伤害
AI:要计算总伤害,需要基础攻击力、暴击率、
暴击伤害等数据。请问这把武器的具体
属性是……(开始问一堆问题)
或者,AI干脆会给你一个公式,让你自己去计算。
问题在于:
[×] AI不知道装备数据,你得手动输入
[×] 每次查询都要重复说明装备属性
[×] AI没有"记忆",无法对比多件装备
方案B:MCP方案(我们要做的)
这就是MCP的价值: 它让AI从"会说"变成"会做"。更重要的是,你可以把这个MCP发布出去,让其他的AI应用也可以使用你的MCP Server。
基于上面的分析,我们的目标很明确:
项目定位:游戏装备计算助手
具体来说,玩家可以:
1. 查询装备属性
"破晓之剑有什么属性?"
→ 通过Resources查询装备数据,返回详细属性
2. 计算战斗数值
"我用破晓之剑打史莱姆能造成多少伤害?"
→ 调用伤害计算工具,返回准确结果
3. 对比装备性能
"破晓之剑和无锋重剑哪个更强?"
→ 调用对比分析工具,给出建议
现在让我展示一个完整的交互流程图,看看用户问一个问题后,系统是如何一步步地处理并生成最终答案的:
完整流程解读
1. 用户提问阶段
2. LLM 决策阶段
3. MCP Server 执行阶段
equipments.json 读取数据4. LLM 生成阶段
5. 循环判断
6. 最终输出
核心要点
[✓] LLM 全程主导 - 自主决定调用哪些 MCP 能力
[✓] 自动循环 - 可多次调用,直到信息足够
[✓] 最终由 LLM 生成 - 保证输出自然流畅
[✓] MCP Server 只负责执行 - 不做决策,只提供数据/计算
场景 1:调用 1 次 MCP
用户输入:「请查询装备"破晓之剑"的属性」
↓
LLM 分析:需要读取装备数据
↓
LLM 决定:调用 Resources
↓
调用 MCP:read_resource(weapon_破晓之剑) ← 第 1 次
↓
MCP 返回:装备卡片数据(类型、攻击、暴击等)
↓
LLM 判断:信息已足够
↓
生成答案:输出该装备的属性说明
总计:1 次 MCP 调用
场景 2:调用 3 次 MCP
用户问:"帮我详细分析破晓之剑,并推荐搭配的护甲"
↓
LLM 分析:需要分析模板
↓
LLM 决定:调用 Prompts
↓
调用 MCP:get_prompt(equipment_analysis) ← 第 1 次
↓
MCP 返回:分析模板(属性解读、适用场景、优缺点、搭配建议)
↓
LLM 判断:需要装备详细数据
↓
LLM 决定:调用 Resources
↓
调用 MCP:read_resource(weapon_破晓之剑) ← 第 2 次
↓
MCP 返回:破晓之剑完整属性
↓
LLM 判断:需要护甲数据用于搭配建议
↓
LLM 决定:调用 Resources
↓
调用 MCP:read_resource(armor_龙鳞甲) ← 第 3 次
↓
MCP 返回:龙鳞甲属性
↓
LLM 判断:信息已足够
↓
生成答案:完整的分析报告 + 搭配建议
总计:3 次 MCP 调用
用户问:"对比所有武器,给我推荐最适合暴击流的装备组合"
↓
LLM 分析:需要获取所有武器数据
↓
LLM 决定:调用 Resources
↓
调用 MCP:read_resource(weapon_破晓之剑) ← 第 1 次
调用 MCP:read_resource(weapon_无锋重剑) ← 第 2 次
调用 MCP:read_resource(weapon_疾风短刃) ← 第 3 次
↓
MCP 返回:3 件武器的完整属性
↓
LLM 判断:需要计算暴击收益
↓
LLM 决定:调用 Tools
↓
调用 MCP:calculate_damage(疾风短刃) ← 第 4 次
↓
MCP 返回:疾风短刃伤害详情(暴击率 75%)
↓
LLM 判断:需要护甲搭配
↓
LLM 决定:调用 Resources
↓
调用 MCP:read_resource(armor_暗影斗篷) ← 第 5 次
↓
MCP 返回:暗影斗篷属性
↓
LLM 判断:信息已足够
↓
生成答案:"暴击流推荐:疾风短刃(75% 暴击率)+ 暗影斗篷,
总暴击收益最高..."
场景 3:调用 5 次 MCP
总计:5 次 MCP 调用
三种 MCP 能力的对比
| 能力 | LLM 何时选择 | 适用场景 |
|---|---|---|
| Resources | 需要查询装备的详细信息 | 简单数据查询 |
| Tools | 需要计算、对比、复杂逻辑 | 复杂计算 |
| Prompts | 需要结构化分析模板 | 深度分析 |
需求分析和交互流程已经清楚了。接下来进入技术选型与实现环节——为什么 Server 用 Node.js、Client 用 Python?项目的整体架构和目录结构是怎样的?下一节将给出答案。
| 中文 | English | 音标 | 说明 |
|---|---|---|---|
| 交互流程设计 | Interaction Flow Design | /ˌɪntərˈækʃn floʊ dɪˈzaɪn/ | 设计用户、AI应用和MCP Server之间的多步交互流程 |
| 渐进式决策 | Progressive Decision | /prəˈɡresɪv dɪˈsɪʒn/ | LLM在调用过程中持续观察结果,动态决定后续步骤 |
| 参数引导 | Parameter Guidance | /pəˈræmɪtər ˈɡaɪdns/ | Prompt在参数缺失时主动询问用户补充的交互机制 |
| 资源调用计数 | Resource Call Count | /ˈriːsɔːrs kɔːl kaʊnt/ | 完成一个用户需求所需的MCP调用次数统计 |